<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>

    // 字符匹配符  => 匹配集合中的任意一个字符
    // [xyz]   匹配x y z中的任意一个  => 由x y z组成
    // [0-9]   匹配数字中的任意一个  [0123456789]
    // [a-z]   匹配小写中的任意一个  [qwertyuiopasdfghjklzxcvbnm]
    // [A-Z]   匹配大写中的任意一个  [QWERTYUIOPASDFGHJKLZXCVBNM]
    // [0-9a-zA-Z_]   匹配数字字母下划线
    // [0-9a-zA-Z_$]  匹配 数字 字母 下划线 $


    // 字符匹配符取反  =>  非
    // [^xyz]   匹配除x y z以外的任意一个
    // [^0-9]   匹配非数字  => 除数字以外的任意一个
    // [^0-9a-zA-Z_]   匹配非数字 字母 下划线

    // 注意:字符匹配符中除 ^ - [ ] 转义字符 以外, 都是普通字符($ + * ?)

    // 字符簇(官方规定的集合范围  => 直接用)
    // \d   匹配数字    [0-9]
    // \D   匹配非数字  [^0-9]
    // \w   匹配数字 字母 下划线   [0-9a-zA-Z_]
    // \W   匹配非数字 字母 下划线  [^0-9a-zA-Z_]
    // \s   匹配空白字符 (空格 换行 回车)
    // \S   匹配非空白字符  
    // .    除换行符以外的任意字符 
    // [\u4e00-\u9fa5]   匹配中文



    // 用户名: 由 数字 字母 下划线 $ 组成, 6-12位, 不能以数字开头

    // 由 数字 字母 下划线 $ 组成, 6-12位
    // var user = "!123123";
    // var reg = /^[0-9a-zA-Z_$]{6,12}$/;  
    // console.log(reg.test(user));
    
    // 由 数字 字母 下划线 $ 组成, 6-12位, 不能以数字开头
    var user = "a123123";
    // var reg = /^[^0-9][0-9a-zA-Z_$]{5,11}$/;   // 非数字范围太大 => 应该取数字 字母 下划线 $中 除数字以外的
    // var reg = /^[a-zA-Z_$][0-9a-zA-Z_$]{5,11}$/; 
    var reg = /^[a-zA-Z_$][\w$]{5,11}$/; 
    console.log(reg.test(user));


    // 手机号:  1 [3456789] \d{9}
    var phone = "17386141517";
    var reg = /^1[3-9]\d{9}$/;
    console.log(reg.test(phone));

</script>
</html>